package controllers;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import models.EmailModel;

import data.EmailData;
import datastore.EmailDataFile;
import datastore.EmailDataStore;
import debugs.EmailDataStoreDebug;

public class RegisterEmailServlet extends HttpServlet{
	public void doGet(HttpServletRequest request, HttpServletResponse response)
	throws IOException, ServletException {
		response.sendRedirect("/home");
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
		throws IOException, ServletException {
		HttpSession session = request.getSession();
		String strEmail = (String) request.getParameter("email");
		String city = (String) request.getParameter("city");
		
		EmailData emailData = new EmailData();
		EmailModel email = new EmailModel();
		if (strEmail != null) {
			Pattern p = Pattern.compile("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
			Matcher m = p.matcher(strEmail);
			if (m.matches()) {
				
				email = emailData.getEmail(strEmail);
				if (email == null) {
					email = new EmailModel();
					email.setEmail(strEmail);
					email.setCity(city);
					emailData.insert(email);
					session.setAttribute("success", "<b>Xin chúc mừng!</b> Email của bạn đã được cập nhật vào hệ thống của chúng tôi. ");
				} else {
					session.setAttribute("error", "<b>Thông báo!</b> Email của bạn đã từng được đăng ký nhận tin khuyến mại trước đó. Xin cảm ơn ");
				}
				
				/*//Save store
				EmailDataStore emailDataStore = EmailDataFile.getEmailByFileName(city);
				List<String> emails = new ArrayList<String>();
				if (emailDataStore == null) {
					emailDataStore = new EmailDataStore();
					emailDataStore.setCity(city);
					emails.add(email.getEmail());
					emailDataStore.setEmails(emails);
					
					EmailDataFile.savePage(emailDataStore);
					session.setAttribute("success", "<b>Xin chúc mừng!</b> Email của bạn đã được cập nhật vào hệ thống của chúng tôi. ");
				} else {
					emails = emailDataStore.getEmails();
					if (!emails.contains(email.getEmail())) {
						emails.add(email.getEmail());
						emailDataStore.setEmails(emails);
						
						EmailDataFile.savePage(emailDataStore);
						session.setAttribute("success", "<b>Xin chúc mừng!</b> Email của bạn đã được cập nhật vào hệ thống của chúng tôi. ");
					} else {
						session.setAttribute("error", "<b>Thông báo!</b> Email của bạn đã từng được đăng ký nhận tin khuyến mại trước đó. Xin cảm ơn ");
					}
				}*/
				
				
			} else {
				session.setAttribute("error", "<b>Lỗi</b> Địa chỉ email không hợp lệ: " + strEmail);
			}
		} else {
			session.setAttribute("error", "<b>Lỗi</b> Địa chỉ email không hợp lệ: " + strEmail);
		}
		
		response.sendRedirect("/");
	}
}
